package cache

import (
	"gitee.com/gousing/cache/storage"
)

// GetString 获取 string 类型的缓存值, 如果不存在或已经过期则返回空值
//   - 支持自动转换类型: bool, string, intX, uintX, floatX 以及实现了 Stringer 接口的类型
func GetString(key string) string {
	val, _ := GetStringE(key)
	return val
}

// GetStringD 获取 string 型的缓存值, 如果不存在或已经过期则返回指定的 defaultVal 默认值
//   - 支持自动转换类型: bool, string, intX, uintX, floatX 以及实现了 Stringer 接口的类型
func GetStringD(key string, defaultVal string) string {
	val, err := GetStringE(key)
	if err != nil {
		return defaultVal
	}
	return val
}

// GetStringD 获取 string 类型的缓存值, 如果不存在或已经过期则返回空值和错误信息
//   - 支持自动转换类型: bool, string, intX, uintX, floatX 以及实现了 Stringer 接口的类型
func GetStringE(key string) (string, error) {
	if key == "" {
		return "", storage.ErrKeyIsEmpty
	}
	var val string
	err := GetDefault().Scan(key, &val)
	return val, err
}
